//1.
/*
主栈和最小栈，查看最小元素用最小栈，删除主栈的栈顶元素时，也要更新最小栈的栈顶元素
比如入栈-2 0 -3
主栈为[-2, 0, -3]
最小栈为[-2, -2, -3]
*/
class MinStack {
public:
    stack<int> main_stack;
    stack<int> min_stack;
    
    MinStack() {
        

    }
    
    void push(int val) {
        main_stack.push(val);
        if(min_stack.empty())
            min_stack.push(val);
        else
            min_stack.push(min(val,min_stack.top()));
    }
    
    void pop() {
        main_stack.pop();
        min_stack.pop();
    }
    
    int top() {
        return main_stack.top();
    }
    
    int getMin() {
        return min_stack.top();
    }
};

